//引入模块
const express = require('express');
const cors = require('cors');
const db = require('./db');
const body_parser = require('body-parser');
const dateFormat = require('./dateFormat');
const { renderSlot } = require('vue');
const app = express();

//解决跨域
app.all("*", function (req, res, next) {
    res.header("Access-Control-Allow-Origin", "*");
    res.header("Access-Control-Allow-Headers", "mytoken"); // res.header("Access-Control-Allow-Headers", "X-Requested-With");
    res.header("Access-Control-Allow-Methods", "PUT,POST,GET,DELETE,OPTIONS");
    next();
});
//处理参数
app.use(body_parser.json());
//获取post的参数
app.use(body_parser.urlencoded({ extended: false }));
//解决跨域
app.use(cors());
//端口
app.listen(9090, function () {
    console.log('服务9090正在启动....');
});

//查询车辆信息
app.post('/selectCar', function (req, res) {
    let obj = req.body.carobj;
    // console.log(obj);
    db.SelectCar(obj, (result) => {
        res.send({ data: result })
    })
})
//注册车辆
app.post('/insertCar', function (req, res) {
    let obj = req.body.carobj;
    // console.log(obj);
    db.insertCar(obj, (result) => {
        res.send({ data: result })
    })

})

//查询办公用品
app.post('/selectOffice', function (req, res) {
    let obj = req.body.carobj;
    // console.log(obj);
    db.SelectOffice(obj, (result) => {
        res.send({ data: result })
    })
})
//修改审核的接口
app.post('/updateOffice', function (req, res) {
    let obj = req.body.carobj;
    // console.log(obj);
    db.UpdateOffice(obj, (result) => {
        res.send({ data: result })
    })
})
//获取新闻信息
app.get('/selectMana', function (req, res) {
    db.SelectManage(function (datas) {
        let result = datas;
        for (const item of result) {
            item.NewsTime = dateFormat.dateFormat(item.NewsTime);
        }
        res.send({ data: result });
    })
})
//根据id删除新闻
app.post('/deleteMana', function (req, res) {
    db.DeleteMana(req.body.NewsId, function (datas) {
        res.send({ data: datas })
    })
})
//创建新闻
app.post('/insertmana', function (req, res) {
    let obj = req.body;
    // console.log(obj);
    db.InsertMana(obj, (result) => {
        res.send({ data: result })
    })

})
//员工
//根据id删除日程
app.post('/deletecalendarInfo', function (req, res) {
    // console.log(req.body.ClId);
    db.DeletecalendarInfo(req.body.ClId, function (datas) {
        res.send({ data: datas })
    })
})
//查看日程安排
app.get("/getcalendarInfo", (req, res) => {
    db.getcalendarInfo(function (datas) {
        let result = datas;
        for (const item of result) {
            item.Cltime = dateFormat.dateFormat(item.Cltime);
        }
        res.send({ data: result });
    })
});
//创建日程
app.post('/insertcalendarInfo', function (req, res) {
    let obj = req.body.carobj;
    // console.log(obj);
    db.InsertcalendarInfo(obj, (result) => {
        res.send({ data: result })
    })
})
//创建办公用品申请单
app.post('/insertworkthing', function (req, res) {
    let obj = req.body.carobj;
    // console.log(obj);
    db.Insertworkthing(obj, (result) => {
        res.send({ data: result })
    })
})
//查看工资信息
app.get("/selectmoney", (req, res) => {
    db.Selectmoney(function (datas) {
        let result = datas;
        for (const item of result) {
            item.SDate = dateFormat.dateFormat(item.SDate);
        }
        res.send({ data: result });
    })
});
//获取消息数据
app.post("/selectEmil", (req, res) => {
    let objs = req.body;
    // console.log(objs);
    db.SelectEmil(objs, (datas) => {
        let result = datas;
        for (const item of result) {
            item.InformTime = dateFormat.dateFormat(item.InformTime);
        }
        res.send({ data: result })
    })
})
//修改消息的接口
app.post('/updateEmil', function (req, res) {
    let obj = req.body.carobj;
    // console.log(obj);
    db.UpdateEmil(obj, (result) => {
        res.send({ data: result })
    })
})
//根据id删除消息
app.post('/deleteEmil', function (req, res) {
    // console.log(req.body.InformId);
    db.DeleteEmil(req.body.InformId, function (datas) {
        res.send({ data: datas })
    })
})
//发送消息的接口
app.post('/insertEmil', function (req, res) {
    let obj = req.body.carobj;
    // console.log(obj);
    db.InsertEmil(obj, (result) => {
        res.send({ data: result })
    })
})
//1.根据登录账号查询个人信息，及登录密码
app.get('/personinfo', function (req, res) {
    db.personinfo(req.query.loginname, function (datas) {
        // console.log(datas);
        res.send({ data: datas })
    })
})
//2.根基登陆账号，查找权限
app.get('/manigetnav', function (req, res) {
    // console.log(req.query.userGH);
    db.manigernav(req.query.userGH, function (datas) {
        res.send({ data: datas });
    })
})
//3.部门管理，新建部门
app.post('/add_part', function (req, res) {
    db.add_part(req.body, function (datas) {
        if (datas.affectedRows > 0) {
            res.send({ state: 1 });
        } else {
            res.send({ state: 0 });
        }
    })
})
//4.查询所有部门
app.get('/allpart', function (req, res) {
    db.allpart(function (datas) {
        res.send({ data: datas })
    })
})
//4.1根据部门id，查所有员工
app.get('/partpeople', function (req, res) {
    db.part_people(req.query.id, function (datas) {
        res.send({ data: datas })
    })
})
//5.根据id删除部门
app.get('/delpart', function (req, res) {
    db.delpart(req.query.id, function (datas) {
        if (datas.affectedRows > 0) {
            res.send({ state: 1 });
        } else {
            res.send({ state: 0 });
        }
    })
})
//6.职位管理，新增职位
app.post('/addposition', function (req, res) {
    db.add_position(req.body, function (datas) {
        if (datas.affectedRows > 0) {
            res.send({ state: 1 });
        } else {
            res.send({ state: 0 });
        }
    })
})
// 7.查询所有职位
app.get('/allposition', function (req, res) {
    db.allposition(function (datas) {
        res.send({ data: datas })
    })
})
//7.1根据职位id，查所有员工
app.get('/positionpeople', function (req, res) {
    db.position_people(req.query.id, function (datas) {
        res.send({ data: datas })
    })
})
//8.gen根据id删除职位
app.get('/delposition', function (req, res) {
    db.delposition(req.query.id, function (datas) {
        if (datas.affectedRows > 0) {
            res.send({ state: 1 });
        } else {
            res.send({ state: 0 });
        }
    })
})

//9.权限管理,根据部门等级添加部门新权限
app.post('/add_power', function (req, res) {
    db.add_power(req.body, function (datas) {
        if (datas.affectedRows > 0) {
            res.send({ state: 1 });
        } else {
            res.send({ state: 0 });
        }
    })
})
// 10.查询所有权限
app.get('/allpower', function (req, res) {
    db.allpower((datas) => {
        res.send({ data: datas })
    })
})
// 11.根据修改部门层级，查找所部门权限
app.get('/chosepower', function (req, res) {
    db.chosepower(req.query.level, function (datas) {
        res.send({ data: datas })
    })
})
//12.修改部门权限
app.post('/updatepower', function (req, res) {
    db.delchosepower(req.body.level, function (datas) { //先删除数据 
        if (datas.affectedRows > 0) {
            var result = []; //承接循環返回的狀太
            for (let i = 0; i < req.body.typeurl.length; i++) {
                var obj = {}
                obj.level = req.body.level;
                obj.newpower = req.body.typeurl[i].title;
                obj.url = req.body.typeurl[i].url;
                db.add_power(obj, function (datas1) {
                    if (datas1.affectedRows > 0) {
                        result.push(datas1.affectedRows)
                    }
                })
                console.log(result.length);
            }
            res.send({ state: 1 })
        }
    })
})
//13.查询所有员工信息
app.get('/alluser', function (req, res) {
    db.alluser(datas => {
        res.send({ data: datas })
    })
})
//14.修改员工信息和权限
app.post('/updatejob',function(req,res){
    db.updatejob(req.body,function(datas){
        if (datas.affectedRows > 0) {
            res.send({ state: 1 });
        } else {
            res.send({ state: 0 });
        }
    })
})


//张家晨接口
// 1、员工管理
// 1.1 渲染员工信息
app.get('/allstaff', function (req, res) {
    db.allstaff((datas) => {
        res.send({ data: datas });
    })
})
// 1.2 员工工号、姓名模糊查询
app.post('/searchstaff', function (req, res) {
    db.searchstaff(req.body.num, req.body.name, function (datas) {
        res.send({ data: datas });
    })
})
// 1.3 修改写入员工信息
app.post('/changestaff', (req, res) => {
    db.changestaff(req.body, function (result) {
        if (result.affectedRows > 0) {
            res.send({ state: 1 }); // 成功
        } else {
            res.send({ state: 0 }); // 失败
        }
    })
})
// 1.4 删除员工信息
app.get('/delstaff', (req, res) => {
    db.delstaff(req.query.id, function (datas) {
        if (datas.affectedRows > 0) {
            res.send({ state: 1 }); // 删除成功
        } else {
            res.send({ state: 0 }); // 删除失败
        }
    })
})
// 1.5 新增员工信息
app.post('/addstaff', (req, res) => {
    let obj = req.body.uobj;
    db.addstaff(obj, function (result) {
        if (result.affectedRows > 0) {
            res.send({ state: 1 });//成功
        } else {
            res.send({ state: 0 });//失败
        }
    })
})

// 2、合同管理
// 2.1 渲染合同信息
app.get('/allcontract', (req, res) => {
    db.allcontract((datas) => {
        res.send({ data: datas });
    })
})
// 2.2 员工姓名、其他模糊查询
app.post('/searchcontract', function (req, res) {
    let obj = req.body;
    db.searchcontract(obj, function (datas) {
        res.send({ data: datas });
    })
})
// 2.3 添加合同信息
app.post('/addcontract', function (req, res) {
    let obj = req.body.htobj;
    db.addcontract(obj, (datas) => {
        if (datas.affectedRows > 0) {
            res.send({ state: 1 }); // 添加成功
        } else {
            res.send({ state: 0 }); // 添加失败
        }
    })
})
// 2.4 删除合同信息
app.get('/delcontract', (req, res) => {
    db.delcontract(req.query.id, function (datas) {
        if (datas.affectedRows > 0) {
            res.send({ state: 1 }); // 删除成功
        } else {
            res.send({ state: 0 }); // 删除失败
        }
    })
})

// 3、请假管理
// 3.1 渲染请假信息
app.get('/allleave', (req, res) => {
    db.allleave((datas) => {
        res.send({ data: datas });
    })
})
// 3.2 请假审批信息模糊查询
app.post('/searchleave', (req, res) => {
    db.searchleave(req.body.name, function (result) {
        res.send({ data: result });
    })
})
// 3.3 渲染待审批列表
app.get('/allleave2', (req, res) => {
    db.allleave2((datas) => {
        res.send({ data: datas });
    })
})
// 3.4 请假待审批
app.post('/dspleave', function (req, res) {
    db.dspleave(req.body, (result) => {
        if (result.affectedRows > 0) {
            res.send({ state: 1 });
        } else {
            res.send({ state: 0 })
        }
    })
})

// 4、工资管理
// 4.1 渲染工资列表
app.get('/allsalary', (req, res) => {
    db.allsalary((datas) => {
        res.send({ data: datas });
    })
})
// 4.2 员工姓名模糊查询
app.post('/searchsalary', function (req, res) {
    db.searchsalary(req.body.name, function (datas) {
        res.send({ data: datas });
    })
})
// 4.3 渲染工资发放列表
app.get('/showsalary', (req, res) => {
    db.showsalary((datas) => {
        res.send({ data: datas });
    })
})
// 4.4 职位模糊查询
app.post('/searchsalary2', function (req, res) {
    db.searchsalary2(req.body.name, function (datas) {
        res.send({ data: datas });
    })
})
// 4.5 发放工资
app.post('/allsalary2', function (req, res) {
    let obj = req.body;
    db.allsalary2(obj, (datas) => {
        if (datas.affectedRows > 0) {
            res.send({ state: 1 }); // 发布成功
        } else {
            res.send({ state: 0 }); // 发布失败
        }
    })
})

// 5、培训管理
// 5.1 渲染培训列表
app.get('/alltrain', (req, res) => {
    db.alltrain((datas) => {
        res.send({ data: datas });
    })
})
// 5.2 报名状态模糊查询
app.post('/searchtrain1', (req, res) => {
    db.searchtrain1(req.body.name, function (result) {
        res.send({ data: result });
    })
})
// 5.3 删除培训信息
app.get('/deltrain', (req, res) => {
    db.deltrain(req.query.id, function (datas) {
        if (datas.affectedRows > 0) {
            res.send({ state: 1 }); // 删除成功
        } else {
            res.send({ state: 0 }); // 删除失败
        }
    })
})
// 5.4 新建培训计划
app.post('/addtrain2', function (req, res) {
    let obj = req.body.tobj;
    db.addtrain2(obj, (datas) => {
        if (datas.affectedRows > 0) {
            res.send({ state: 1 }); // 添加成功
        } else {
            res.send({ state: 0 }); // 添加失败
        }
    })
})
// 5.5 渲染报名情况列表
app.get('/alltrain2', (req, res) => {
    db.alltrain2((datas) => {
        res.send({ data: datas });
    })
})
// 5.6 员工报名情况模糊查询
app.post('/searchtrain', function (req, res) {
    let obj = req.body;
    db.searchtrain(obj, function (datas) {
        res.send({ data: datas });
    })
})
// 5.7 员工报名审核
app.post('/shtrain', function (req, res) {
    db.shtrain(req.body, (result) => {
        if (result.affectedRows > 0) {
            res.send({ state: 1 });
        } else {
            res.send({ state: 0 })
        }
    })
})

//员工界面接口
// 1.个人信息，修改个人信息接口
app.post('/changeself', function (req, res) {
    db.changeself(req.body, function (datas) {
        if (datas.affectedRows > 0) {
            res.send({ state: 1 }); // 成功
        } else {
            res.send({ state: 0 }); // 失败
        }
    })
})
//.2.根据登录名查找请假信息
app.get('/person_rest', function (req, res) {
    db.person_rest(req.query.username, function (datas) {
        res.send({ data: datas });
    })
})
//2.1根据id删除请假
app.get('/Del_rest', function (req, res) {
    db.Del_rest(req.query.id, function (datas) {
        if (datas.affectedRows > 0) {
            res.send({ state: 1 }); // 成功
        } else {
            res.send({ state: 0 }); // 失败
        }
    })
})
//2.2新增个人请假条
app.post('/addrest', function (req, res) {
    console.log(req.body);
    db.add_rest(req.body, function (datas) {
        if (datas.affectedRows > 0) {
            res.send({ state: 1 }); // 成功
        } else {
            res.send({ state: 0 }); // 失败
        }
    })
})
//3合同信息，查询个人合同信息
app.get('/person_hetong', (req, res) => {
    db.personhetong(req.query.usergh, (datas) => {
        res.send({ data: datas });
    })
})
// 3.2 员工姓名、其他模糊查询
app.post('/searchcontract1', function (req, res) {
    let obj = req.body;
    db.searchcontract1(obj, function (datas) {
        res.send({ data: datas });
    })
})
//// 4.个人培训申请纪律
app.get('/person_train', function (req, res) {
    db.persontrain(req.query.usergh, (datas) => {
        res.send({ data: datas });
    })
})
//4.1.查询所有可报名的培训项目
app.get('/trainok', function (req, res) {
    db.trainok((datas) => {
        res.send({ data: datas });
    })
})
//4.2新建培训报名申请
app.post('/add_trainsq', function (req, res) {
    db.add_trainsq(req.body, function (datas) {
        if (datas.affectedRows > 0) {
            res.send({ state: 1 }); // 成功
        } else {
            res.send({ state: 0 }); // 失败
        }
    })
})